মেথড ওভারলোডিং (Method Overloading) এবং মেথড ওভাররাইডিং (Method Overriding) হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি গুরুত্বপূর্ণ ধারণা। যদিও তারা কিছুটা সাদৃশ্যপূর্ণ, তবে তাদের মধ্যে মৌলিক পার্থক্য রয়েছে। এই ধারণাগুলি সাধারণত ক্লাস এবং অবজেক্টের মধ্যে কাজ করে এবং নির্দিষ্ট শর্তে মেথডগুলি ব্যবহার করা হয়।
১. মেথড ওভারলোডিং (Method Overloading)
মেথড ওভারলোডিং হল একই মেথড নামের সাথে একাধিক মেথড তৈরি করা, যেখানে প্রতিটি মেথডের প্যারামিটার ভিন্ন থাকে (যেমন সংখ্যায় বা ধরণে)। এটি মূলত একই ফাংশন বা মেথডের বৈচিত্র্যময় সংস্করণ তৈরির প্রক্রিয়া।
মেথড ওভারলোডিং এর উদ্দেশ্য:
- একই মেথড নামের সাথে বিভিন্ন প্যারামিটার ব্যবহার করে একাধিক কাজ সম্পাদন করা।
- এটি কোডের পুনরাবৃত্তি (redundancy) কমাতে সাহায্য করে এবং কোড ক্লিন এবং কমপ্যাক্ট রাখে।
উদাহরণ (Method Overloading in Java):
class Calculator {
// Method to add two integers
int add(int a, int b) {
return a + b;
}
// Method to add three integers
int add(int a, int b, int c) {
return a + b + c;
}
// Method to add two doubles
double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(10, 20)); // Calls the first add() method
System.out.println(calc.add(10, 20, 30)); // Calls the second add() method
System.out.println(calc.add(10.5, 20.5)); // Calls the third add() method
}
}এখানে, add() মেথডটি তিনটি ভিন্নভাবে ওভারলোড করা হয়েছে:
- দুটি পূর্ণসংখ্যার যোগফল
- তিনটি পূর্ণসংখ্যার যোগফল
- দুটি দশমিক সংখ্যা যোগফল
মেথড ওভারলোডিং এর মধ্যে প্যারামিটার সংখ্যা বা ধরণে পরিবর্তন থাকতে হবে, তবে মেথডের নাম একই থাকবে।
২. মেথড ওভাররাইডিং (Method Overriding)
মেথড ওভাররাইডিং হল একটি সুপার ক্লাসের মেথডকে সাব-ক্লাসে আবার নতুন করে সংজ্ঞায়িত করা (অথবা পুনরায় বাস্তবায়ন করা)। এটি সুপার ক্লাসের মেথডের আচরণ পরিবর্তন করে এবং সাব-ক্লাসে নতুন আচরণ নির্ধারণ করে।
মেথড ওভাররাইডিং এর উদ্দেশ্য:
- সুপার ক্লাসের মেথডের আচরণকে পরিবর্তন বা উন্নত করা।
- যদি একই মেথড নাম এবং প্যারামিটার থাকে, তবে সাব-ক্লাসে নতুনভাবে আচরণ সংজ্ঞায়িত করা।
উদাহরণ (Method Overriding in Java):
class Animal {
// Method in super class
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
// Overriding the sound() method in subclass (Dog)
void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
myAnimal.sound(); // Calls the super class method
Dog myDog = new Dog();
myDog.sound(); // Calls the overridden method in subclass
}
}এখানে:
Animalক্লাসে একটিsound()মেথড রয়েছে যা "Animal makes a sound" প্রিন্ট করে।Dogক্লাসেsound()মেথডটি Animal ক্লাসের মেথডকে ওভাররাইড করে "Dog barks" প্রিন্ট করে।
এই উদাহরণে Dog ক্লাসে sound() মেথডটি Animal ক্লাসের sound() মেথডকে ওভাররাইড করেছে।
মেথড ওভারলোডিং এবং মেথড ওভাররাইডিং এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | মেথড ওভারলোডিং (Method Overloading) | মেথড ওভাররাইডিং (Method Overriding) |
|---|---|---|
| কোডের ব্যবহার | একই মেথড নামের সঙ্গে বিভিন্ন প্যারামিটার ব্যবহার করা হয়। | সুপার ক্লাসের মেথডের আচরণ পরিবর্তন করা হয়। |
| মেথডের নাম | একই নাম, কিন্তু প্যারামিটার বা ডেটা টাইপে পার্থক্য। | একই নাম এবং প্যারামিটার ব্যবহার করা হয়। |
| পরিবর্তন | প্যারামিটার সংখ্যা বা টাইপ পরিবর্তন হয়। | মেথডের বাস্তবায়ন (Implementation) পরিবর্তন হয়। |
| ফলাফল | একাধিক মেথড তৈরি করা হয়। | মেথডের আচরণ পরিবর্তন হয়। |
| পর্যবেক্ষণ | কম্পাইল টাইমে (Compile-time) মেথড নির্বাচন হয়। | রানটাইম (Runtime) এ মেথড নির্বাচন হয়। |
সারাংশ (Summary)
- মেথড ওভারলোডিং হল একই মেথড নামের মধ্যে বিভিন্ন প্যারামিটার বা আর্গুমেন্ট দিয়ে একাধিক মেথড সংজ্ঞায়িত করা। এটি কম্পাইল টাইমে নির্ধারিত হয়।
- মেথড ওভাররাইডিং হল সুপার ক্লাসের মেথডের আচরণ সাব-ক্লাসে নতুনভাবে সংজ্ঞায়িত করা। এটি রানটাইমে নির্ধারিত হয়।
এই দুটি কৌশল OOP প্রোগ্রামিংয়ের শক্তিশালী উপাদান এবং কোডকে আরও পুনরায় ব্যবহারযোগ্য এবং সুনির্দিষ্ট করে তোলে।
Read more